﻿Public Class CLSCestas
    Dim sql As String
    Dim objbanco As New CLSBanco
    Dim M_Ces_ID As Integer
    Dim M_Ces_Nom As String
    Dim M_Ces_VT As Single
    Dim LINHA As Integer
    Dim OBJDTLOCAL As New DataTable



    Public Property ID() As Integer
        Get
            Return M_Ces_ID
        End Get
        Set(ByVal value As Integer)
            M_Ces_ID = value
        End Set
    End Property

    Public Property Nome() As String
        Get
            Return M_Ces_Nom
        End Get
        Set(ByVal value As String)
            M_Ces_Nom = value
        End Set
    End Property
    Public Property valorTotalCesta() As Single
        Get
            Return M_Ces_VT
        End Get
        Set(ByVal value As Single)
            M_Ces_VT = value
        End Set
    End Property

    Public Sub Gravar(ByVal novo As Boolean)

        Try
            If novo Then
                sql = "insert into Cestas " & _
                  "(Ces_Nom" & _
                  ",Ces_VT" & _
                  ") values " & _
                  "('" & M_Ces_Nom & "'" & _
                  "," & M_Ces_VT & _
                  ")"
                objbanco.executar_comando(sql)
                ID = buscar_ultimo_codigo()

            Else
                sql = "update Cestas set" & _
               " Ces_Nom= '" & M_Ces_Nom & "'" & _
               ",Ces_VT= '" & M_Ces_VT & "'" & _
               " where Ces_idCesta=" & M_Ces_ID
                objbanco.executar_comando(sql)
            End If
        Catch ex As Exception
            MsgBox("Ocorreu o erro: " & ex.Message, MsgBoxStyle.Critical)
            objbanco.fechar_banco()
        End Try
    End Sub

  
    Public Function excluir(ByVal minhacesta As Integer) As Boolean
        sql = "Delete from Cestas where Ces_IdCesta=" & minhacesta
        objbanco.executar_comando(sql)
        Return True
    End Function
    Public Function excluirItensCesta(ByVal minhacesta As Integer) As Boolean
        sql = "Delete from CestaProdutos  where CP_IdCesta=" & minhacesta
        objbanco.executar_comando(sql)
        Return True
    End Function


    Public Function excluirPedidoCesta(ByVal minhacesta As Integer) As Boolean
        sql = "Delete from PedidoCesta where PC_IdCesta=" & minhacesta
        objbanco.executar_comando(sql)
        Return True
    End Function



    Public Function LocalizarPorID(ByVal digiteID As Integer) As DataTable
        sql = "select * from Cestas where Ces_idCesta = " & digiteID
        Dim objda As New OleDb.OleDbDataAdapter(sql, objbanco.objcon)
        Dim objds As New DataSet
        objda.Fill(objds)
        Return objds.Tables(0)
    End Function

    Public Function LocalizarPorNome(ByVal NomeCesta As String) As DataTable
        sql = "select * from Cestas where Ces_Nom like '%" & NomeCesta & "%'"
        Dim objda As New OleDb.OleDbDataAdapter(sql, objbanco.objcon)
        Dim objds As New DataSet
        objda.Fill(objds)
        Return objds.Tables(0)
    End Function

#Region "verificar"

    Public Function mostraproduto(ByVal conteudo As String) As DataTable
        'sql = "select * from paciente where nome_paciente like '" & conteudo & "%'"
        'sql = "SELECT Produto.Pro_ID, Produto.Pro_Nom, CestaProdutos.CP_qtd, Produto.Pro_VU, Cestas.Ces_VT FROM Produto INNER JOIN (Cestas INNER JOIN CestaProdutos ON Cestas.Ces_idCesta = CestaProdutos.CP_idCesta) ON Produto.Pro_ID = CestaProdutos.CP_idPro;"

        sql = "SELECT " & _
              "Produto.Pro_ID, " & _
              "Produto.Pro_Nom, " & _
              "Produto.Pro_VU, " & _
              "CestaProdutos.CP_qtd " & _
        "FROM " & _
        "Cestas, CestaProdutos, Produto " & _
        "WHERE " & _
        "Cestas.Ces_idCesta = CestaProdutos.CP_idCesta and  " & _
        "Produto.Pro_ID = CestaProdutos.CP_idPro and " & _
        "Cestas.Ces_idCesta =" & conteudo

        Dim objda As New OleDb.OleDbDataAdapter(sql, objbanco.objcon)
        Dim objds As New DataSet
        objds.Tables.Clear()
        objda.Fill(objds)
        Return objds.Tables(0)
    End Function

#End Region

    Public Function TotalCesta(ByVal conteudo As String) As Single
        sql = "Select Sum(CestaProdutos.CP_qtd * Produto.Pro_VU) as [Receita Total] from CestaProdutos, Produto,Cestas where Cestas.Ces_idCesta = CestaProdutos.CP_idCesta and Produto.Pro_ID = CestaProdutos.CP_idPro and Cestas.Ces_idCesta = " & conteudo
        Dim objda As New OleDb.OleDbDataAdapter(sql, objbanco.objcon)
        Dim objds As New DataSet
        objds.Tables.Clear()
        objda.Fill(objds)
        Return objds.Tables(0).Rows(0).Item(0).ToString
    End Function


#Region "método mostrar Produtos da Cesta"
    Public Function mostrarProdutosDaCesta() As DataTable
        sql = "SELECT  PRODUTO.PRO_ID, PRODUTO.PRO_Nom,  CestaProdutos.CP_qtd,Ces_VT from  Produto,Cestas,CestaProdutos where produto.Pro_id = CestaProdutos.CP_idPro "
        Dim objda As New OleDb.OleDbDataAdapter(sql, objbanco.objcon)
        Dim objds As New DataSet
        objds.Tables.Clear()
        objda.Fill(objds)
        Return objds.Tables(0)
    End Function
#End Region


#Region "Método ir para o próximo"
    Public Sub Ir_para_proximo()
        OBJDTLOCAL = objbanco.Navegar("cestas")
        LINHA = LINHA + 1
        If LINHA > OBJDTLOCAL.Rows.Count - 1 Then
            LINHA = OBJDTLOCAL.Rows.Count - 1
        End If
        Call MOSTRAR_DADOS_NA_CLASSE()
    End Sub
#End Region

#Region "Método mostrar cestas"
    Public Sub mostra()
        OBJDTLOCAL = objbanco.Navegar("cestas")

        Call MOSTRAR_DADOS_NA_CLASSE()
    End Sub
#End Region

#Region "Método ir para o ultimo"
    Public Sub Ir_para_ultimo()
        OBJDTLOCAL = objbanco.Navegar("cestas")
        LINHA = OBJDTLOCAL.Rows.Count - 1
        Call MOSTRAR_DADOS_NA_CLASSE()
    End Sub
#End Region

#Region "Método ir para o primeiro"
    Public Sub Ir_para_primeiro()
        OBJDTLOCAL = objbanco.Navegar("cestas")
        LINHA = 0
        Call MOSTRAR_DADOS_NA_CLASSE()
    End Sub
#End Region

#Region "Método ir para o anterior"
    Public Sub Ir_para_anterior()
        OBJDTLOCAL = objbanco.Navegar("cestas")
        LINHA = LINHA - 1
        If LINHA < 0 Then
            LINHA = 0
        End If
        Call MOSTRAR_DADOS_NA_CLASSE()
    End Sub
#End Region

#Region "método mostrar dados na classe"

    Public Sub MOSTRAR_DADOS_NA_CLASSE()
        Try
            ID = OBJDTLOCAL.Rows(LINHA).Item(0)
            Nome = OBJDTLOCAL.Rows(LINHA).Item(1)
            valorTotalCesta = OBJDTLOCAL.Rows(LINHA).Item(2)
        Catch ex As Exception
            MsgBox("Não existe nenhum iten cadastrado")
        End Try

    End Sub
#End Region

    Public Function buscar_ultimo_codigo() As Integer
        sql = "select max(Ces_idCesta) from cestas"
        Dim objda As New OleDb.OleDbDataAdapter(sql, objbanco.objcon)
        Dim objds As New DataSet
        objds.Tables.Clear()
        objda.Fill(objds)
        Return objds.Tables(0).Rows(0).Item(0)
    End Function


End Class
